package BasicKnowledge;

import java.util.Arrays;
import java.util.Scanner;

public class workMethod {
    public static void main(String[] args) {
        //有一组数据，请找出出现多次出现的数字（n/2）次。

        int[] array = { 6,5,5 };
        int[] manyNum = new int[array.length / 2];
        // Arrays.sort(array);//排序后，中间的元素一定是出现超过2/n次的元素
        //int mid = array[array.length/2];
        //System.out.println("出现多次的元素是: " + mid);

        for (int i = 0; i < array.length; i++) {
            int count = 0;
            for (int j = 0; j < array.length; j++) {
                if(array[i] == array[j]) {
                    count++;
                }
            }
            if(count > array.length / 2) {  //放在二层循环外面是因为将arry[i]与arry[j]都比较完之后，才可以判断count的值是不是1
                System.out.println("只出现n/2次的数字是:>" + array[i]);
                break;
            }
        }
    }
    public static void main1(String[] args) {
        //有一组数据，只有一个数字是出现一次，其他是两次，请找出这个数字。
        int[] arry = { 1, 1, 2, 2, 3, 3, 4, 4, 5, 6 };
        for (int i = 0; i < arry.length; i++) {
            int count = 0;
            for (int j = 0; j < arry.length; j++) {
                if(arry[i] == arry[j]) {
                    count++;
                }
            }
            if(count == 1) {  //放在二层循环外面是因为将arry[i]与arry[j]都比较完之后，才可以判断count的值是不是1
                System.out.println("只出现一次的数字是:>" + arry[i]);
            }
        }
    }
    public static int fib(int n ){
        if(n == 1 || n == 2){
            return 1;
        }
        else {
           return fib(n - 1) + fib(n - 2);
        }
    }
    public static void main8(String[] args) {
        //求斐波那契数列的第n项。(迭代实现)
        System.out.println(fib(1));
        System.out.println(fib(2));
        System.out.println(fib(3));
        System.out.println(fib(4));
        System.out.println(fib(5));
    }

    public static int fac(int n ){
        int sum = 0;
        for (int i = 1; i <= n; i++) {
            int ret = 1;
            for (int j = 1; j <= i; j++) {
                ret *= j;  //ret是用来记录此时i的阶乘
            }
            sum += ret; //sum用来记录每个i的阶乘的和
        }
        return sum;
    }
    public static int fac1(int n) {
        int ret = 1;
        for (int i = 1; i <= n ; i++) {
            ret *= i;
        }
        return ret;
    }
    public static void main3(String[] args) {
        //System.out.println(fac(5));
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入整数n");
        int n = sc.nextInt();
        System.out.println(fac1(n));
    }


    public static void swap(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if( arr[j] % 2 == 0) { //判断条件是i是否是在偶数位
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;

                }
            }
        }
    }

    public static int max2(int n1 , int n2){
        int ret1 = n1 > n2 ? n1 : n2;
        return ret1 ;
    }
    public static int max3(int n1,int n2 , int n3) {
       int ret2 = max2(n1,n2);
       return ret2 > n3 ? ret2 : n3;
    }
    public static void main5(String[] args) {
        System.out.println(max3(3, 4, 9));
    }
    public static void main4(String[] args) {
        int[] arr = {1,2,3,4,5,6};
        swap(arr);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
        }
    }
}
